# -*- coding: utf-8 -*-

from devicetest.api import Asserts
from devicetest.aw.OpenHarmony import CommonOH
from devicetest.core.test_case import TestCase, Step

from aw.common import common_setup, common_teardown
from aw.pom import DeskTop, Setting


class PreTest_RK3568_Basic_Systemui_0400(TestCase, DeskTop):
    # 预置条件：
    # 烧写目标版本后，正常进入桌面
    # 测试步骤：
    # 1、进入桌面，点击桌面中任意一个应用
    # 2、点击左下角back键
    # 3、点击底部home键
    # 4、点击右下角recent键
    # 5、上滑清理某一个后台运行的应用/点击垃圾桶按钮
    # 预期结果：
    # 1、成功进入任意应用
    # 2、点击back键可以正常返回至上一级页面
    # 3、点击home键可以正常返回至桌面
    # 4、多个应用展示后台运行
    # 5、上滑可结束某一个后台运行的应用/点击垃圾桶按钮可清理所有后台运行的应用

    def __init__(self, controllers):
        self.TAG = self.__class__.__name__
        TestCase.__init__(self, self.TAG, controllers)

    def setup(self):
        common_setup(self.Phone1)

    def process(self):
        Step('步骤1：进入桌面，点击桌面中任意一个应用')
        CommonOH.startAbility(self.Phone1, Setting.ability_name, Setting.bundle_name)
        CommonOH.wait(self.Phone1, 1)
        CommonOH.touchByText(self.Phone1, '移动网络')
        Step('预期结果1：成功进入任意应用')
        CommonOH.checkIfTextExist(self.Phone1, '移动数据')
        Step('步骤2：点击左下角back键')
        CommonOH.pressBackKey(self.Phone1)
        Step('预期结果2：点击back键可以正常返回至上一级页面')
        CommonOH.checkIfTextExist(self.Phone1, '设置')
        CommonOH.checkIfTextExist(self.Phone1, '移动网络')
        Step('步骤3：点击底部home键')
        CommonOH.pressHomeKey(self.Phone1)
        Step('预期结果3：点击home键可以正常返回至桌面')
        CommonOH.checkIfTextExist(self.Phone1, '相机')
        Step('步骤4：点击右下角recent键')
        CommonOH.startAbility(self.Phone1, 'com.ohos.photos.MainAbility', 'com.ohos.photos')
        CommonOH.click(self.Phone1, **self.recent_button)
        Step('预期结果4：多个应用展示后台运行')
        CommonOH.checkIfTextExist(self.Phone1, '图库')
        CommonOH.checkIfTextExist(self.Phone1, '设置')
        Step('步骤5.1：上滑清理某一个后台运行的应用')
        CommonOH.swipe(self.Phone1, x1=180, y1=640, x2=180, y2=320)
        Step('预期结果5.1：上滑可结束某一个后台运行的应用')
        CommonOH.checkIfTextExist(self.Phone1, '图库', expect=False)
        CommonOH.checkIfTextExist(self.Phone1, '设置', expect=True)
        Step('步骤5.2：点击垃圾桶按钮')
        CommonOH.click(self.Phone1, **self.clear_button)
        Step('预期结果5.2：点击垃圾桶按钮可清理所有后台运行的应用')
        CommonOH.checkIfTextExist(self.Phone1, '相机')
        for progress in ['com.ohos.photos', 'com.ohos.settings']:
            cmd = f'ps -ef | grep -w {progress} | grep -v grep'
            output = CommonOH.shell(self.Phone1, cmd)
            Asserts.assert_not_in(progress, output)

    def teardown(self):
        common_teardown(self.Phone1)
